SSL/TLS certificates management
SSL/TLS (Secure Sockets Layer / Transport Layer Security) — bu tarmoq orqali uzatilayotgan ma’lumotlarni shifrlash va himoyalash uchun ishlatiladigan protokollar. Zamonaviy veb-xizmatlar va serverlar uchun SSL/TLS sertifikatlari xavfsizlikning eng muhim qismi hisoblanadi. Sertifikatlar yordamida foydalanuvchi va server o‘rtasidagi aloqalar shifrlanadi, ma’lumotlar uchinchi tomon tomonidan o‘qilmaydi va o‘zgartirilmaydi.
1. SSL/TLS sertifikati nima?
SSL/TLS sertifikati — bu serverning haqiqiyligini tasdiqlovchi va tarmoq orqali uzatilayotgan ma’lumotlarni shifrlovchi raqamli hujjat. Sertifikatda server nomi, egasi, amal qilish muddati va shifrlash kalitlari haqida ma’lumotlar bo‘ladi.
Sertifikat turlari:
- Self-signed — o‘zingiz yaratgan, test va ichki tarmoqlar uchun.
- CA-signed — rasmiy sertifikatlash markazi (CA) tomonidan tasdiqlangan, ommaviy xizmatlar uchun.
- Wildcard — bir nechta subdomenlar uchun bitta sertifikat.
- SAN (Subject Alternative Name) — bir nechta domen va subdomenlarni bitta sertifikatda ko‘rsatish.
2. Sertifikat yaratish va o‘rnatish
2.1. Self-signed sertifikat yaratish (test uchun)
openssl req -x509 -nodes -days 365 -newkey rsa:2048 \
-keyout /etc/ssl/private/server.key \
-out /etc/ssl/certs/server.crt
Izoh:
server.key— maxfiy kalitserver.crt— sertifikat fayli-days 365— amal qilish muddati
2.2. Sertifikat so‘rovi (CSR) yaratish
Agar CA orqali rasmiy sertifikat olmoqchi bo‘lsangiz:
openssl req -new -newkey rsa:2048 -nodes \
-keyout /etc/ssl/private/server.key \
-out /etc/ssl/certs/server.csr
CSR faylini CA (sertifikatlash markazi)ga yuborasiz va tasdiqlangan sertifikat olasiz.
3. Sertifikatni serverga o‘rnatish
3.1. Apache uchun
/etc/apache2/sites-available/default-ssl.conf faylini tahrirlang:
SSLEngine on
SSLCertificateFile /etc/ssl/certs/server.crt
SSLCertificateKeyFile /etc/ssl/private/server.key
So‘ngra, SSL modulini yoqing va saytni ishga tushiring:
sudo a2enmod ssl
sudo a2ensite default-ssl
sudo systemctl reload apache2
3.2. Nginx uchun
/etc/nginx/sites-available/default faylini tahrirlang:
server {
listen 443 ssl;
server_name example.uz;
ssl_certificate /etc/ssl/certs/server.crt;
ssl_certificate_key /etc/ssl/private/server.key;
location / {
# ...
}
}
So‘ngra, Nginx xizmatini qayta ishga tushiring:
sudo systemctl reload nginx
4. Sertifikatni tekshirish va monitoring
4.1. Sertifikat amal qilish muddatini tekshirish
openssl x509 -enddate -noout -in /etc/ssl/certs/server.crt
4.2. Onlayn tekshiruvlar
- SSL Labs — serveringizni onlayn tekshirish va xavfsizlik darajasini baholash.
- crt.sh — sertifikatlar tarixini ko‘rish.
5. Let's Encrypt bilan bepul sertifikat olish
Let's Encrypt — avtomatlashtirilgan va bepul SSL/TLS sertifikatlar beruvchi xizmat.
Certbot yordamida o‘rnatish:
sudo apt install certbot python3-certbot-nginx
sudo certbot --nginx
Apache uchun:
sudo apt install certbot python3-certbot-apache
sudo certbot --apache
Certbot avtomatik ravishda sertifikatni o‘rnatadi va konfiguratsiyani yangilaydi.
Sertifikatni avtomatik yangilash
Let's Encrypt sertifikatlari 90 kun amal qiladi. Certbot avtomatik yangilash uchun cron yoki systemd timer o‘rnatadi:
sudo certbot renew --dry-run
6. Sertifikatlarni boshqarish bo‘yicha tavsiyalar
- Sertifikat amal qilish muddatini doimiy tekshirib boring.
- Maxfiy kalitlarni (private key) hech qachon uchinchi tomonga bermang.
- Sertifikatlarni faqat ishonchli CA orqali oling.
- Sertifikat va kalit fayllariga faqat root yoki maxsus foydalanuvchi kirishiga ruxsat bering.
- Sertifikatlarni yangilashni avtomatlashtiring.
Xulosa
SSL/TLS sertifikatlari yordamida server va foydalanuvchi o‘rtasidagi aloqani shifrlash, ma’lumotlarni himoyalash va xizmatlar ishonchliligini oshirish mumkin. To‘g‘ri boshqaruv va monitoring orqali xavfsizlik darajasini yuqori saqlash va zamonaviy talablarni bajarish osonlashadi.